Application programs, such as word processing application programs, have traditionally been stand-alone software programs installed on a personal computer that provide rich editing and formatting functionality for documents stored in local or network-based files. These application programs are generally very large, requiring many megabytes of drive space to install. The recent trend, however, is for collaborative development of documents by remotely diverse users who may not have access to the same stand-alone application programs and where the documents may be stored on remote networks accessible over the Internet. This has led to the development of application programs that can be delivered via a conventional World Wide Web (“web”) browser, thereby allowing remote documents to be edited by users over a network without the need to install a traditional stand-alone application program.
One technique for providing web-based application program functionality involves developing web pages that utilize editing features available in many web browser programs. This technique has the advantage of being small and fast with little development effort. The limited editing features provided by these web browsers, however, generally cannot compare with the feature rich capabilities of traditional stand-alone application programs. Further, the editing features available may vary among the different web browser programs, thereby making it difficult to provide a consistent user experience across all web browsers.
Another technique for providing web-based application program functionality is to implement a complete application program that is executed within a browser using a cross-browser runtime technology such as JAVA from SUN MICROSYSTEMS, FLASH from ADOBE SYSTEMS, or Asynchronous JAVASCRIPT and XML (“AJAX”). While allowing the developer complete control over the features and capabilities of the application program, this method generally involves a considerable development effort and requires implementation of low level editing functionality, such as the rendering of text in a window as typed by the user, the movement of a blinking cursor through the text, or the constant reflow of the contents of the window the user types. In addition, because the application program is executed in a browser-based runtime technology, it is often slow in execution and may not be able to provide an adequately responsive user interface.
It is with respect to these and other considerations that the present improvements have been needed.